package com.itheima.myinner.test10;

import com.itheima.myinner.text1.Outer;

/*
        1. 创建实现类, 通过implements关键字去实现接口
        2. 重写方法
        3. 创建实现类对象
        4. 调用重写后的方法.

        匿名内部类:

            前提: 需要存在类\接口
            格式:
                    new 类名 \ 接口名 (){
                        重写方法
                    }
     */
public class TestInnerClass {
    public static void main(String[] args) {
        //创建实现类对象
        InterImpl i = new InterImpl();
        i.show();
        new InterImpl().show();//匿名调用只能使用一次

        //匿名内部类
        inter1 in = new InterImpl();//接口指向了实现类对象
        new inter1(){
            @Override
            public void show() {
                System.out.println("重写后的show方法");
            }
        }.show();//整个大括号就相当于new了一个InterImpl的对象,让后用它去调用show,因为InterImpl是接口的实现类


        //如果存在多个show方法我们可以用以个变量在前面接收,这时候我们就可以用ii来多个方法进行调用了
       inter2 ii = new inter2(){
            @Override
            public void show1() {
                System.out.println("111");
            }

            @Override
            public void show2() {
                System.out.println("222");
            }
        };
           ii.show1();
           ii.show2();

}
//创建实现类, 通过implements关键字去实现接口
static class InterImpl implements  inter1{
    @Override
    public void show() {
        System.out.println("InterImpl  重写的show方法");
    }
}
//创建接口
interface inter1{
    void show();
}
//存在多个show方法的时候
interface inter2{
    void show1();
    void show2();
}
}